#include<bits/stdc++.h>
#define ll long long
#define int long long
using namespace std;
const int mod=999999999;
const int maxn=4e3+9;
int n,q;
int t[maxn][maxn];
int a[maxn][maxn];
int lowbit(int x) {return x&-x;}
void add(int x,int y,int w)
{
	for(int i=x;i<=n;i+=lowbit(i))
	{
		for(int j=y;j<=n;j+=lowbit(j))
		{
			t[i][j]=t[i][j]+w;
		}
	}
}
int ask(int x,int y)
{
	ll res=0;
	for(int i=x;i;i-=lowbit(i)) for(int j=y;j;j-=lowbit(j)) res+=t[i][j];
	return res;
}
signed main()
{
	freopen("fire.in","r",stdin);
	freopen("fire.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>q;
	while(q--)
	{
		int ys;
		int dir,i,op,x;
		cin>>ys;
		if(ys==1)
		{
			cin>>dir>>i>>op>>x;
			if(dir==0)
			{
				for(int j=1;j<=n;j++) add(i,j,-a[i][j]);
				if(op==1) for(int j=1;j<=n;j++) a[i][j]&=x;
				if(op==2) for(int j=1;j<=n;j++) a[i][j]|=x;
				if(op==3) for(int j=1;j<=n;j++) a[i][j]^=x;
				if(op==4) for(int j=1;j<=n;j++) a[i][j]=(a[i][j]+x)%mod;
				for(int j=1;j<=n;j++) add(i,j,a[i][j]);
			}
			else 
			{
				for(int j=1;j<=n;j++) add(j,i,-a[j][i]);
				if(op==1) for(int j=1;j<=n;j++) a[j][i]&=x;
				if(op==2) for(int j=1;j<=n;j++) a[j][i]|=x;
				if(op==3) for(int j=1;j<=n;j++) a[j][i]^=x;
				if(op==4) for(int j=1;j<=n;j++) a[j][i]=(a[j][i]+x)%mod;
				for(int j=1;j<=n;j++) add(j,i,a[j][i]);
			}
		}
		else 
		{
			int l,r;
			cin>>l>>r;
			cout<<ask(l,r)<<'\n';
		}
	}
	return 0;
}
